import { defineStore } from "pinia";
import api from '../api/api.js'; // 导入 API 服务

export const posrsStore = defineStore({
    id: "posts",
    state: () => ({
        posts: [], // 初始化 posts 为一个空数组
        slider_posts: [],
        slider_button: [],
        slider_rigin: [],
        // rowCount:[],
    }),

    actions: {

        async fetchUserInfo(data) {
            try {
                const response = await api.post('/posts', data); // 调用登录的 API 接口
                if (response.data.code === 0) {
                    this.posts = response.data.data; // 从响应中设置用户信息
                    console.log('获取用户信息成功:', response.data.data)
                    this.savepostsToLocalStorage(); // 保存用户信息到本地存储
                    this.loadpostsFromLocalStorage(); // 从本地存储中加载用户信息
                    return true; // 表示成功
                } else {
                    console.error('获取用户信息出错:', response.data.msg);
                    return false; // 失败
                }
            } catch (error) {
                console.error("获取用户信息失败:", error);
                return false; // 处理错误
            }
        },

        savepostsToLocalStorage() {
            localStorage.setItem('posts', JSON.stringify(this.posts)); // 将用户信息保存到浏览器的本地存储
        },

        loadpostsFromLocalStorage() {
            const posts = localStorage.getItem('posts'); // 从本地存储读取用户信息
            if (posts) {
                this.posts = JSON.parse(posts); // 解析 JSON 数据并设置到 state
                this.slider_rigin = this.posts.top_posts.slice(0, 2); // 获取前3条数据作为轮播图数据
                this.slider_button = this.posts.top_posts.slice(2, 5); // 获取第4到第5条数据作为图片文字数据
                this.slider_posts = this.posts.slider_posts; // 获取第6到第7条数据作为专辑详情数据
                // this.rowCount = this.posts.row_count; // 获取第6到第7条数据作为专辑详情数据
            } else {
                this.fetchUserInfo(1).then(r => {
                    if (r) {
                        this.savepostsToLocalStorage(); // 保存信息到本地存储
                    }
                }); // 如果本地存储中没有用户信息，则设置为空对象
            }
        }
    },

    getters: {
        fullName(state) {
            return `${state.posts.firstName} ${state.posts.lastName}`; // 示例：获取用户全名的计算属性
        },
    },
});
